package com.hrt.datasender.process.strategy.hj212;

import java.util.HashMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class MessagePraser {

    /**
     * 根据参数名称获取元数据值
     *
     * @param msg
     * @param parmName
     * @return
     */
    public static String getMetaDataValue(String msg, String parmName) {
        String regex = parmName + "=(.+?);";
        String result = getMatchedString(regex, msg, 1);
        return result;
    }

    /**
     * 根据正则，获取匹配的部分
     *
     * @param regex
     * @param text
     * @param groupid
     * @return
     */
    private static String getMatchedString(String regex, String text, int groupid) {
        Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);

        Matcher matcher = pattern.matcher(text);

        while (matcher.find()) {
            return matcher.group(groupid);
        }

        return null;
    }

    /**
     * 获取CP命令数据体 gislin 2015年10月29日
     *
     * @param msg
     * @return
     */
    public static String getCP(String msg) {
        String regex = "CP=&&(.+?)&&";
        String result = getMatchedString(regex, msg, 1);
        return result;
    }

    public static HashMap<String, String> getCpValue(String msg) {

        String cp = getCP(msg);

        if (cp == null || cp.trim().equals("")) {
            return null;
        }

        HashMap<String, String> cpDataValue = new HashMap<>();

        String parmValueStrs[] = cp.split(";");

        for (String parmValueStr : parmValueStrs) {
            String[] parmValue = parmValueStr.split("=");

            if (parmValue.length < 2) {
                continue;
            }
            cpDataValue.put(parmValue[0], parmValue[1]);
        }

        return cpDataValue;
    }

    /**
     * 获取QN
     * @param msg
     * @return
     */
    public static String getQN(String msg) {
        String regex = "QN=(.+?);";
        String result = getMatchedString(regex, msg, 1);
        return result;
    }

}
